package com.yunpeng.aidevice.dao.mapper.relation;

import com.yunpeng.aidevice.dao.mapper.IRelationMapper;
import com.yunpeng.aidevice.dao.model.relation.OrganizationPermissionDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 组织机构权限 Mapper 接口
 * </p>
 *
 * @author hemw
 * @since 2020-04-07
 */
@Mapper
public interface OrganizationPermissionMapper extends IRelationMapper<OrganizationPermissionDO> {

    /**
     * 查询组织机构默认权限
     *
     * @param orgCode     组织机构代码
     * @param currentDate 当前时间
     * @return
     */
    List<String> queryPermissionCodeListByOrg(@Param(value = "orgCode") String orgCode, @Param(value = "currentDate") Date currentDate);

    /**
     * 根据组织机构删除对应权限
     *
     * @param organizationCode
     */
    void deleteByOrganizationCode(@Param("organizationCode") String organizationCode);

    /**
     * 根据组织机构代码查询对应关联列表
     *
     * @param orgCode
     * @param currentDate
     * @return
     */
    List<OrganizationPermissionDO> queryListByOrganization(@Param(value = "orgCode") String orgCode, @Param(value = "currentDate") Date currentDate);

    /**
     * 根据权限代码查询对应关联列表
     *
     * @param permissionCode
     * @param currentDate
     * @return
     */
    List<OrganizationPermissionDO> queryListByPermission(@Param(value = "permissionCode") String permissionCode, @Param(value = "currentDate") Date currentDate);

    /**
     * 根据组织机构或权限代码（必须有一个不为空）查询存在数量
     *
     * @param permissionCode
     * @param orgCode
     * @param currentDate
     * @return
     */
    Integer existsCount(@Param(value = "permissionCode") String permissionCode, @Param(value = "orgCode") String orgCode, @Param(value = "currentDate") Date currentDate);

    /**
     * 解除组织机构权限绑定
     *
     * @param permissionCode
     * @param orgCode
     */
    void deleteByOrgPermission(@Param(value = "permissionCode") String permissionCode, @Param(value = "orgCode") String orgCode);
}
